package com.ruoyi.training.service;

import java.util.List;
import com.ruoyi.training.domain.PaymentRecord;
import com.ruoyi.training.dto.payment.PaymentFormDto;
import com.ruoyi.training.dto.payment.PaymentInvoiceDto;
import com.ruoyi.training.dto.payment.PaymentRefundDto;
import com.ruoyi.training.vo.payment.ChangePayVo;
import com.ruoyi.training.vo.payment.SelectPayVo;

/**
 * 缴费记录Service接口
 * 
 * @author hcc
 * @date 2025-09-28
 */
public interface IPaymentRecordService 
{
    /**
     * 查询缴费记录
     * 
     * @param paymentRecordId 缴费记录主键
     * @return 缴费记录
     */
    public PaymentRecord selectPaymentRecordByPaymentRecordId(String paymentRecordId);

    /**
     * 查询缴费记录列表
     * 
     * @param paymentRecord 缴费记录
     * @return 缴费记录集合
     */
    public List<PaymentRecord> selectPaymentRecordList(PaymentRecord paymentRecord);

    /**
     * 新增缴费记录
     * 
     * @param paymentRecord 缴费记录
     * @return 结果
     */
    public int insertPaymentRecord(PaymentRecord paymentRecord);

    /**
     * 修改缴费记录
     * 
     * @param paymentRecord 缴费记录
     * @return 结果
     */
    public int updatePaymentRecord(PaymentRecord paymentRecord);

    /**
     * 批量删除缴费记录
     * 
     * @param paymentRecordIds 需要删除的缴费记录主键集合
     * @return 结果
     */
    public int deletePaymentRecordByPaymentRecordIds(String[] paymentRecordIds);

    /**
     * 删除缴费记录信息
     * 
     * @param paymentRecordId 缴费记录主键
     * @return 结果
     */
    public int deletePaymentRecordByPaymentRecordId(String paymentRecordId);

    /**
     * 修改缴费
     */
    public int changePay(ChangePayVo changePayVo);

    /**
     * 查询缴费记录列表
     */
    public List<PaymentInvoiceDto> getPaymentRecordList(SelectPayVo selectPayVo);

    /**
     * 获取缴费记录详细信息
     */
    public PaymentFormDto selectByPaymentRecordId(String paymentRecordId);

    /**
     * 获取退费申请详细信息
     */
    public PaymentRefundDto selectRefundInfo(String paymentRecordId);

    /**
     * 获取个人缴费记录列表
     */
    public List<PaymentInvoiceDto> myPaymentRecordList(SelectPayVo selectPayVo);
}
